
<!DOCTYPE html>

<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />

    <title>LAVA Software Project Contribution - Introduction &#8212; LAVA 2024.05 documentation</title>
    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
    <link rel="stylesheet" type="text/css" href="_static/bootstrap-sphinx.css" />
    <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
    <script src="_static/jquery.js"></script>
    <script src="_static/underscore.js"></script>
    <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
    <script src="_static/doctools.js"></script>
    <script src="_static/sphinx_highlight.js"></script>
    <link rel="shortcut icon" href="_static/favicon.ico"/>
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="LAVA Software Community Project Contribution Guide" href="contribution.html" />
    <link rel="prev" title="LAVA Software Community Project Code of Conduct" href="code-of-conduct.html" />
    <link rel="canonical" href="https://docs.lavasoftware.org/lava/contribution-intro.html" />
  
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes">
<script type="text/javascript" src="_static/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="_static/js/jquery-fix.js"></script>
<script type="text/javascript" src="_static/bootstrap-3.4.1/js/bootstrap.min.js"></script>
<script type="text/javascript" src="_static/bootstrap-sphinx.js"></script>


  </head><body>

  <div id="navbar" class="navbar navbar-default navbar-fixed-top">
    <div class="container">
      <div class="navbar-header">
        <!-- .btn-navbar is used as the toggle for collapsed navbar content -->
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="index.html"><span><img src="_static/lava.png"></span>
          LAVA</a>
        <span class="navbar-text navbar-version pull-left"><b>2024.05</b></span>
      </div>

        <div class="collapse navbar-collapse nav-collapse">
          <ul class="nav navbar-nav">
            
                <li><a href="genindex.html">Index</a></li>
                <li><a href="contents.html">Contents</a></li>
            
            
              <li class="dropdown globaltoc-container">
  <a role="button"
     id="dLabelGlobalToc"
     data-toggle="dropdown"
     data-target="#"
     href="index.html">Site <b class="caret"></b></a>
  <ul class="dropdown-menu globaltoc"
      role="menu"
      aria-labelledby="dLabelGlobalToc"><ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">Introduction to LAVA</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="contents.html">Contents</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="glossary.html">Glossary of terms</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="support.html">Getting support</a></li>
</ul>
</ul>
</li>
              
                <li class="dropdown">
  <a role="button"
     id="dLabelLocalToc"
     data-toggle="dropdown"
     data-target="#"
     href="#">Page <b class="caret"></b></a>
  <ul class="dropdown-menu localtoc"
      role="menu"
      aria-labelledby="dLabelLocalToc"><ul>
<li><a class="reference internal" href="#">LAVA Software Project Contribution - Introduction</a><ul>
<li><a class="reference internal" href="#before-you-start">Before you start</a></li>
<li><a class="reference internal" href="#ways-to-contribute">Ways to contribute</a><ul>
<li><a class="reference internal" href="#documentation">Documentation</a></li>
<li><a class="reference internal" href="#issue-tracker">Issue Tracker</a></li>
<li><a class="reference internal" href="#bug-fixes-and-new-features">Bug Fixes and New Features</a></li>
<li><a class="reference internal" href="#contributing-to-the-functional-testing">Contributing to the functional testing</a></li>
<li><a class="reference internal" href="#mailing-lists-and-irc">Mailing lists and IRC</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</ul>
</li>
              
            
            
              
                
  <li>
    <a href="code-of-conduct.html" title="Previous Chapter: LAVA Software Community Project Code of Conduct"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; LAVA Software...</span>
    </a>
  </li>
  <li>
    <a href="contribution.html" title="Next Chapter: LAVA Software Community Project Contribution Guide"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">LAVA Software... &raquo;</span>
    </a>
  </li>
              
            
            
            
            
              <li class="hidden-sm"></li>
            
          </ul>

          
            
<form class="navbar-form navbar-right" action="search.html" method="get">
 <div class="form-group">
  <input type="text" name="q" class="form-control" placeholder="Search" />
 </div>
  <input type="hidden" name="check_keywords" value="yes" />
  <input type="hidden" name="area" value="default" />
</form>
          
        </div>
    </div>
  </div>

<div class="container">
  <div class="row">
    <div class="body col-md-12 content" role="main">
      
  <section id="lava-software-project-contribution-introduction">
<span id="contribution-guide-intro"></span><span id="index-0"></span><h1>LAVA Software Project Contribution - Introduction<a class="headerlink" href="#lava-software-project-contribution-introduction" title="Permalink to this heading">¶</a></h1>
<p>There are clear benefits to contributing to open-source projects like
the LAVA Software Community Project. You may solve your own problems
more quickly than working alone, and you may also have a positive
effect on your favorite projects.</p>
<p>LAVA is complex and it can be hard to get started as a contributor. If
this is your first time contributing to open source, there may be
easier projects to choose. If you have contributed to a project
before, the temptation might be to immediately start thinking about
adding a new device to LAVA. Beware: device integration is <strong>the most
difficult way to contribute</strong> to the LAVA Software Community
Project. Our recommendation is to start slowly, get familiar with
devices like QEMU or LXC first and learn how to design a Test Plan
which suits your needs.</p>
<section id="before-you-start">
<h2>Before you start<a class="headerlink" href="#before-you-start" title="Permalink to this heading">¶</a></h2>
<p>Read up on LAVA:</p>
<ul class="simple">
<li><p><a class="reference internal" href="index.html#lava-overview"><span class="std std-ref">LAVA Overview</span></a> - especially <a class="reference internal" href="index.html#overview-preparation"><span class="std std-ref">Preparation</span></a>.</p></li>
</ul>
<p>You don’t have to install LAVA to contribute to the LAVA Software
Community Project, depending on how you choose to contribute.</p>
<p>Read up on contributing to open source:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://opensource.guide/how-to-contribute/">https://opensource.guide/how-to-contribute/</a></p></li>
</ul>
</section>
<section id="ways-to-contribute">
<h2>Ways to contribute<a class="headerlink" href="#ways-to-contribute" title="Permalink to this heading">¶</a></h2>
<p>Some may believe that the only way to contribute to an open-source
project is by writing code - fixing bugs or contributing new features.
In reality, there are more ways to contribute.</p>
<section id="documentation">
<h3>Documentation<a class="headerlink" href="#documentation" title="Permalink to this heading">¶</a></h3>
<p>As you learn to use LAVA, keep track of where you notice gaps in the
documentation. Most of the documentation is written by experienced
LAVA maintainers and there are plenty of hidden assumptions. One great
way to start contributing is to provide new documentation to fill in
the gaps or help to reorganize some of the existing documentation to
make it easier for new users to follow. If you experienced and
overcame a challenge because the documentation was lacking, please get
involved and improve the documentation!</p>
<p>LAVA documentation lives in the same repository as the code, in the
<code class="docutils literal notranslate"><span class="pre">doc/v2</span></code> directory. It is written using reStructuredText.</p>
<div class="admonition seealso">
<p class="admonition-title">See also</p>
<p>Read the <a class="reference external" href="http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html">reStructuredText Primer</a>
for more information on reStructuredText. It is used by many Python
projects.</p>
</div>
</section>
<section id="issue-tracker">
<h3>Issue Tracker<a class="headerlink" href="#issue-tracker" title="Permalink to this heading">¶</a></h3>
<p>Get involved by using the LAVA Software Community Project issue
tracker at <a class="reference external" href="https://gitlab.com/lava/lava/issues">https://gitlab.com/lava/lava/issues</a>. To begin
with, you might only create bug reports for issues you encounter. As
you become more comfortable, consider triaging other bug reports.</p>
<p>Start by picking an existing issue and try to reproduce the problem in
another system to which you have access. If you can reproduce it,
outline the steps as a comment on the issue. This will save time for
maintainers when they come to fix the bug later. If you cannot
reproduce the issue, ask the reporter for more information. Triaging
issues has a side-effect of helping you learn more about the project.
This will come in handy as you contribute documentation and/or code in
the future.</p>
</section>
<section id="bug-fixes-and-new-features">
<h3>Bug Fixes and New Features<a class="headerlink" href="#bug-fixes-and-new-features" title="Permalink to this heading">¶</a></h3>
<p>If you can write code, consider contributing bug fixes and,
eventually, new features. There is a good chance that you have
encountered a bug or two in the course of using LAVA. Contribute a fix
for one of these bugs first; it’s very rewarding when you solve one of
your own problems and see the change accepted.</p>
<p>Not all bug fixes involve <a class="reference internal" href="device-integration.html#adding-new-device-types"><span class="std std-ref">new devices</span></a>,
<a class="reference internal" href="templating.html#jinja-templating"><span class="std std-ref">Jinja2 templates</span></a> or changes to the
<code class="docutils literal notranslate"><span class="pre">lava_dispatcher</span></code> code. <a class="reference internal" href="data-export.html#xml-rpc"><span class="std std-ref">XMLRPC</span></a> calls, general user
interface issues, rendering issues in the <a class="reference external" href="https://www.djangoproject.com/">Django</a> templates and
usability of the <a class="reference internal" href="glossary.html#term-query"><span class="xref std std-term">Query</span></a> and <a class="reference internal" href="glossary.html#term-chart"><span class="xref std std-term">Charts</span></a>
functionality would all benefit from more developer attention.</p>
</section>
<section id="contributing-to-the-functional-testing">
<h3>Contributing to the functional testing<a class="headerlink" href="#contributing-to-the-functional-testing" title="Permalink to this heading">¶</a></h3>
<p>The LAVA Software Community Project uses LAVA to test changes to the
LAVA codebase as part of our internal <a class="reference internal" href="lava_ci.html#continuous-integration"><span class="std std-ref">Continuous Integration</span></a> by
running unchanging reference LAVA test jobs against the evolving LAVA
codebase, using as many different <a class="reference internal" href="glossary.html#term-device-type"><span class="xref std std-term">device types</span></a>
as possible. As a long term project, it is important to get wide
coverage of devices yet also to minimize changes outside the LAVA
codebase.</p>
<p>Historically, this testing was done using Linaro’s staging test lab
(<a class="reference external" href="https://staging.validation.linaro.org/scheduler/">https://staging.validation.linaro.org/scheduler/</a>), a small lab
isolated from the other Linaro LAVA instances. In order to broaden the
range of devices which are available for functional testing, labs with
device-types not currently available on staging.validation.linaro.org
would be particularly beneficial.</p>
<p>To contribute, you need to already have a local LAVA lab with suitably
configured, stable, devices and enough capacity to run extra LAVA test
jobs for a few hours at a time. Test jobs would be run via a docker
device on your master, using your devices with a docker worker using
the latest LAVA code. This is a new area of LAVA development, and work
is ongoing. If you are interested, please <a class="reference internal" href="support.html#mailing-lists"><span class="std std-ref">talk to us</span></a>.</p>
</section>
<section id="mailing-lists-and-irc">
<h3>Mailing lists and IRC<a class="headerlink" href="#mailing-lists-and-irc" title="Permalink to this heading">¶</a></h3>
<p>Helping other people on the mailing lists or on IRC is another very
important role within the LAVA Software Community Project.</p>
<ul class="simple">
<li><p>Users need help across all time zones and the LAVA maintainers might
not be around to answer, especially at weekends.</p></li>
<li><p>New users can particularly appreciate help from other new users. The
LAVA maintainers can respond later to clarify any misunderstandings
or fill in more details. Ask questions in the same way as on the
issue tracker:</p>
<ul>
<li><p>identify if the problem being described can be reproduced</p></li>
<li><p>is the problem already covered in the documentation?</p>
<ul>
<li><p>if it is, is there a need to update the documentation to make the
answer easier to find?</p></li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
</section>
</section>


    </div>
      
  </div>
</div>
<footer class="footer">
  <div class="container">
    <p class="pull-right">
      <a href="#">Back to top</a>
      
    </p>
    <p>
        &copy; Copyright 2010-2019, Linaro Limited.<br/>
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 5.3.0.<br/>
    </p>
  </div>
</footer>
  </body>
</html>